package org.ma1.cripto.aes.gui;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class SoporteDispararCambio {
	
	private static SoporteDispararCambio soporteTextoAclarado = null;
	private static SoporteDispararCambio soporteTextoCifrado = null;
	private static SoporteDispararCambio soporteParametros = null;
	private static SoporteDispararCambio soporteOperaciones = null;
	private static SoporteDispararCambio soporteClave = null;
	
	public static SoporteDispararCambio getInstanceSoporteTextoAclarado() {
		if (soporteTextoAclarado == null) {
			soporteTextoAclarado = new SoporteDispararCambio();
		}
		return soporteTextoAclarado;
	}
	
	public static SoporteDispararCambio getInstanceSoporteClave() {
		if (soporteClave == null) {
			soporteClave = new SoporteDispararCambio();
		}
		return soporteClave;
	}
	
	public static SoporteDispararCambio getInstanceSoporteTextoCifrado() {
		if (soporteTextoCifrado == null) {
			soporteTextoCifrado = new SoporteDispararCambio();
		}
		return soporteTextoCifrado;
	}
	
	public static SoporteDispararCambio getInstanceSoporteParametros() {
		if (soporteParametros == null) {
			soporteParametros = new SoporteDispararCambio();
		}
		return soporteParametros;
	}
	
	public static SoporteDispararCambio getInstanceSoporteOperaciones() {
		if (soporteOperaciones == null) {
			soporteOperaciones = new SoporteDispararCambio();
		}
		return soporteOperaciones;
	}
	private List<IListener> listeners;
	
	public SoporteDispararCambio() {
		listeners = new LinkedList<IListener>();
	}
	
	public void dispararCambio(int tipo, String txt) {
		Iterator<IListener> it = listeners.iterator();
		while(it.hasNext()) {
			IListener l = it.next();
			l.handle(tipo, txt);
		}
	}
	
	public void addListener(IListener l) {
		listeners.add(l);
	}
	
	public void removeListener(IListener l) {
		listeners.remove(l);
	}
}
